Cryptographic management of lifecycle states

ABSTRACT

A secret key value that is inaccessible to software is scrambled according to registers consisting of one-time programmable (OTP) bits. A first OTP register is used to change the scrambling of the secret key value whenever a lifecycle event occurs. A second OTP register is used to undo the change in the scrambling of the secret key. A third OTP register is used to affect a permanent change to the scrambling of the secret key. The scrambled values of the secret key (whether changed or unchanged) are used as seeds to produce keys for cryptographic operations by a device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a lifecycle management system.

FIG. 2 is a flowchart illustrating a method of generating encryptionkeys that are lifecycle state dependent.

FIG. 3 is a block diagram illustrating a device that includes acryptographic lifecycle management system.

FIGS. 4A and 4B are a flowchart illustrating a method of configuring andde-configuring a cryptographically managed lifecycle state.

FIGS. 5A-5C illustrate an example lifecycle state generating process.

FIG. 6 is a flowchart illustrating a method of generating lifecycledependent encryption keys.

FIG. 7 is a diagram illustrating the generation of accessible key splitvalues.

FIG. 8 is a block diagram of a processing system.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Many electronic devices (e.g., cell phones, tablets, set-top boxes,etc.) use secure cryptographic keys. These keys may be used, forexample, to secure data on the device, secure communication, and/or toauthenticate the device. As a device goes through various lifecycleevents, it is desirable to protect the keys used by the device fromdisclosure (thereby protecting the data on the device, preventingunauthorized use, etc.)

For example, an end-user, after using a device for a while, and storingsensitive data therein, may experience a problem that requires thedevice be sent back to the manufacturer for repair. In this case, theend-user would not want the manufacturer or repair center to access thesensitive data stored on the device. However, the end-user would alsolike the data to be accessible to them when the device is returned.

In an embodiment, a secret key value that is inaccessible to software(e.g., hardwired into the device) is scrambled according to registersconsisting of one-time programmable bits. These one-time programmable(OTP) bits are, by hardware design, only able to be changed from theirinitial value to another value once, and cannot be returned to theinitial value (e.g., bits that reflect whether an on-chip fuse has beenblown or is still intact).

A first one of the OTP registers is used to change the scrambling of thesecret key value whenever a lifecycle event occurs (e.g., device is sentto a repair center.) By changing the scrambling of the secret key value,the keys used by the device are also changed—thereby preventing data,authorizations, or authentications previously used by the device frombeing copied or used (e.g., by the repair center employees.)

A second one of the OTP registers is used to undo the change in thescrambling of the secret key. Thus, the second OTP register can‘restore’ the keys used by the device back to their pre-lifecycle eventvalues—thereby restoring the ability to use the data, authorizations,and/or authentications used prior to the lifecycle event.

A third one of the OTP registers is used to affect a permanent change tothe scrambling of the secret key—thereby permanently preventing thedata, authorizations, or authentications from being accessed or used.The bits in this register may be used when, for example, a user sells adevice and therefore does not want the new owner to read the previousowners data, or use the authorizations and authentications associatedwith the previous owner.

FIG. 1 is a block diagram illustrating a lifecycle management system. InFIG. 1 , system 100 comprises one-time programmable (OTP) memory 120,lifecycle value generator 130, one-way function 140, key amalgamation150, secret key 170, and OTP programming circuit 180. OTP memory 120includes lifecycle advance register 121, lifecycle rollback register122, and personality register 123.

OTP memory 120 can be, for example, a one-time electrically programmablesemiconductor memory (e.g., fabricated on a semiconductor substrate orusing a semiconductor material). The bits stored by OTP memory 120 are,by hardware design, only able to be changed from their initial value toanother value once. The bits stored by OTP memory 120, once electricallychanged from an initial value, cannot be returned to their initialvalue. For example, the bits that comprise OTP memory 120 may beimplemented as ‘fused’ bits. These fused bits, once changed (i.e.,blown) undergo an irreversible physical process (e.g., the destructionof a conducting element) and therefore cannot be changed back to theirinitial state.

OTP programming circuit 180 is operatively coupled to OTP memory 120.OTP programming circuit 180 is operatively coupled to OTP memory 120 toprogram the bits in OTP memory 120 (e.g., blow fuses to change thevalues of lifecycle advance register 121, lifecycle rollback 122register, personality register 123, etc.) OTP programming circuit 180may be controlled to change bits in OTP memory 120 by a processor and/orsoftware (not shown in FIG. 1 ) running on a device that includes system100. This processor and/or software may change the bits in OTP memory120 in response to a command by a user of the device.

Secret key 170 is operatively coupled to one-way function 140. Secretkey 170 (a.k.a., device generated one-time programmable key split—DGOK)stores a secret key value 175 in hardware. Secret key 170 provides asecret key value 175 to one-way function 140. Secret key 170 may be, forexample, embedded in the netlist of the device, an area of securedflash, or some other nonvolatile form/circuit. In an embodiment, secretkey 170 stores a 256-bit secret key value 175.

Lifecycle advance register 121 is operatively coupled to lifecycle valuegenerator 130. Lifecycle advance register 121 stores lifecycle advancevalue 125. OTP memory 120 provides lifecycle value generator 130 withthe lifecycle advance value 125 stored by lifecycle advance register121. Lifecycle rollback register 122 is operatively coupled to lifecyclevalue generator 130. Lifecycle rollback register 122 stores lifecyclerollback value 126. OTP memory 120 provides lifecycle value generator130 with the lifecycle rollback value 126 stored by lifecycle rollbackregister 122.

Lifecycle value generator 130 receives lifecycle advance value 125 andlifecycle rollback value 126 from OTP memory 120. Lifecycle valuegenerator 130 produces lifecycle state value 135. Lifecycle valuegenerator 130 processes lifecycle advance value 125 and lifecyclerollback value 126 using a lifecycle state generating process/function.This lifecycle state generating process produces a lifecycle state value135 from lifecycle advance value 125 and lifecycle rollback value 126.Lifecycle state value 135 is provided to one-way function 140.

Personality register 123 is operatively coupled to one-way function 140.Personality register 123 stores personality value 127. OTP memory 120provides one-way function 140 with the personality value 127 stored bypersonality register 123. In some embodiments, a processor and/orsoftware on a device with system 100 may be able to read the contents ofone or more of lifecycle advance register 121, lifecycle rollbackregister 122, and personality register 123 from OTP memory 120, orotherwise obtain one or more of lifecycle advance value 125, lifecyclerollback value 126, or personality value 127.

One-way function 140 uses secret key value 175, lifecycle state value135 and personality value 127 to generate key split value 145. One-wayfunction 140 may produce key split value 145 by a process that includes,for example, using personality value 127 as a key tree path and secretkey value 127 as an Advanced Encryption Standard (AES) key. Likewise,the process one-way function 140 uses to produce key split value 145 mayinclude using lifecycle state value 135 as a key tree path and theresult of the previous processing of personality value 127 and secretkey value 175 as an AES key. Other one-way functions/processes may beused to generate key split value 145 from secret key value 175,lifecycle state value 135 and personality value 127. Thus, it should beunderstood that any difference (even a one bit difference) between agiven lifecycle state value 135 or a given personality value 127 willresult in a different key split value 145. In addition, if the one-wayfunction process is selected appropriately, it should be economicallyinfeasible to determine secret key value 175 from key split values145—even when the lifecycle state value(s) 135, lifecycle advancevalue(s) 125, lifecycle rollback value(s) 126 and/or personalityvalue(s) 127 are known.

Key split value 145 is provided to key amalgamation 150. Based on keysplit value 145, and a base key identification value 151, keyamalgamation 150 produces encryption keys 160 for use by the device incryptographic operations. Keys 160 are illustrated in FIG. 1 asincluding a plurality of keys. Specifically, in FIG. 1 , keys 160include key #1 161, key #2 162, and key #3 163. Keys 160 can include,for example, an Elliptic Curve Cryptography (ECC) key for signing (i.e.,authenticating), an ECC private key for encryption/decryption; anAES-256 device specific key, and/or an AES-128 device specific key.Other keys for other uses can also be produced from key split value 145by key amalgamation 150.

In an embodiment, a device with system 100 may go through variouslifecycles. These lifecycles may necessitate a desire to protect and/orchange keys 160. For example, the device may be subject to lab debug orsilicon debug after secret key 170 has been provisioned with secret keyvalue 175. This may occur, for example, after packaging, the deviceand/or IC holding system 100 comes back to the vendor for initial debugand triage. In another example, the device may be used in the field by auser and then sent back to the OEM, ODM, repair shop, or chip vendor forfailure analysis. When that device's fault is fixed, the device can beshipped back to the end user. In this case, it is desirable for thedevice to provide the same functionality (and stored data) as wasavailable prior to sending the device for repair. In another example, anend user may sell the device to another user. In this case, the firstuser would likely not want to reveal their keys (and therefore theirdata) to the second user.

In an embodiment, personality register 123 is configured with an initialvalue—for example a sixteen (16) bit zero value (i.e., 0x0000h.) Duringoperation, the bits of personality register 123 may be successivelychanged by OTP programming 180 in the manner of a thermometer codedcounter. This changing of bit values in personality register 123 by OTPprogramming 180 may be controlled by a privileged process (e.g,operating system) running on the device. Since the bits of OTP memory(and therefore personality register 123) can only be changed once, whenall the bits of personality register 123 have been changed (e.g., set to‘1’ for a value of 0xFFFFh), attempts to further change the value ofpersonality register 123 may result in an error being signaled.

In an example, a user of the device can cause the personality register123 to be incremented (or otherwise change at least one bit inpersonality register 123) before giving up possession of the device(e.g., to a new owner). In another example, the ODM may increment (orotherwise change at least one bit in personality register 123) beforesending the device to an OEM. This ensures that there are no secrets‘left behind’ for the ODM to discover. In these examples, the userand/or ODM can read the contents of personality register 123 to ensurethat system 100 will generate encryption keys 160 that are differentfrom the encryption keys 160 generated prior to the change to thecontents of personality register 123.

In an embodiment, lifecycle advance register 121 is configured with aninitial value—for example a sixteen (16) bit zero value (i.e., 0x0000h.)Likewise, lifecycle rollback register 122 is configured with an initialvalue—for example a sixteen (16) bit zero value (i.e., 0x0000h.) Duringoperation, the bits of lifecycle advance register 121 and the bits oflifecycle rollback register 122 may be successively, and independently,changed by OTP programming 180 in the manner of a thermometer codedcounter.

The changing of the contents of lifecycle advance register 121 and thecontents of lifecycle rollback register 122 by OTP programming 180 maybe controlled by a privileged process (e.g, operating system) running onthe device. The changing of individual bit values in lifecycle advanceregister 121 and the bits of lifecycle rollback register 122 by OTPprogramming 180 may be controlled by respective privileged processesrunning on the device. For example, for a 16-bit lifecycle advanceregister 121 and a 16-bit lifecycle rollback register 122, up to 16privileged processes may be each only allowed to change the value of asingle corresponding bit in lifecycle advance register 121 and/orlifecycle rollback register 122. In other words, for example, to changea particular bit in lifecycle advance register 121 or lifecycle rollbackregister 122, authorization would be required from a correspondingsystem authorization process (e.g., root process). Thus, the device, inthis example, may have up to sixteen (16) of these ‘root’ authorizationentities.

Lifecycle advance register 121 can be incremented (or otherwise have aone-time programmable bit changed) when there is a desire to give thedevice a temporary set of encryption keys 160. For example, when a usersends the device to an OEM for debug/diagnosis, the user can control thedevice to increment lifecycle advance register 121. Thus, the OEM willnot receive, or be able to economically discover, the set of keys 160that the device was using prior to incrementing lifecycle advanceregister 121. Rather, the OEM will be able to obtain the temporary keys160 produced from the new lifecycle state value 135 (which results fromthe changed lifecycle advance value 125.)

When the OEM returns the device to the user, the user can recover theoriginal keys 160 by incrementing (or changing the appropriate one-timeprogrammable bit) in the lifecycle rollback register 122. Thus,incrementing lifecycle advance register 121 causes temporary keys 160 tobe produced, and incrementing lifecycle rollback register 122 undoes theeffect and causes the original keys 160 to be produced. Lifecycle valuegenerator 130 is configured such that certain values stored in lifecyclerollback register 122 undo the effects of certain values stored inlifecycle advance register 121—for example equal values. Lifecycle valuegenerator 130 may be configured such that other pairings may be selectedwhereby the selected lifecycle rollback value 126 undoes the effects ofa corresponding lifecycle advance value 125.

In an embodiment, the changes to lifecycle advance register 121 can becompounded. For example, user #1 may increment lifecycle advanceregister 121 to use a first set of temporary keys 160, then user #2 mayincrement lifecycle advance register 121 to use a second set oftemporary keys 160. User #2 (or user #1) may then increment lifecyclerollback register 122 to return to using the first set of temporarykeys. Lifecycle rollback register 1 may be incremented again to returnto using the original keys 160.

Since the bits of OTP memory (and therefore lifecycle advance register121 and lifecycle rollback register 122) can only be changed once, whenall the bits of lifecycle advance register 121 or lifecycle rollbackregister 122 have been changed (e.g., set to ‘1’ for a value of0xFFFFh), attempts to further change the values of either lifecycleadvance register 121 and lifecycle rollback register 122 may result inan error being signaled.

FIG. 2 is a flowchart illustrating a method of generating encryptionkeys that are lifecycle state dependent. The steps illustrated in FIG. 2may be performed by one or more elements of system 100. A device isconfigured with a secret key that is not accessible via software (202).For example, system 100 can be configured with secret key 170 forproviding secret key value 175 to one-way function 140. The device isconfigured such that secret key 170 (and therefore secret key value 175)cannot be read or written by software running on the device.

A one-time programmable (OTP) memory is configured with initial values(204). For example, OTP memory 120 (and therefore lifecycle advanceregister 121, lifecycle rollback register 122, and personality register123, in particular) may be configured with initial values that can bechanged only once. For example, when OTP memory 120 is comprised offused bits, the initial (i.e., intact or unblown) state of the fusiblelinks determine the initial values that are stored by OTP memory 120(and therefore lifecycle advance register 121, lifecycle rollbackregister 122, and personality register 123, in particular.) In anotherexample, if OTP memory 120 comprises an area of secured flash memory (orsome other nonvolatile memory configured to be programmed only once) theinitial values stored by OTP memory 120 may be (and therefore lifecycleadvance register 121, lifecycle rollback register 122, and personalityregister 123, in particular) programmed by a manufacturer (OEM, or ODM,etc.)

A lifecycle advance value is received from OTP memory (206). Forexample, lifecycle value generator 130 may receive lifecycle advancevalue 125 from OTP memory 120 (and lifecycle advance register 121, inparticular.) A lifecycle rollback value is received from OTP memory(208). For example, lifecycle value generator 130 may receive lifecyclerollback value 126 from OTP memory 120 (and lifecycle advance rollbackregister 122, in particular.)

A lifecycle state value is generated from the lifecycle advance valueand the lifecycle rollback value (210). For example, lifecycle valuegenerator 130 may, using a lifecycle state generating process, calculatea lifecycle state value 135 based on lifecycle advance value 125 andlifecycle rollback value 126. An example lifecycle state generatingprocess may comprise, or be, a bitwise exclusive-OR (XOR) of lifecycleadvance value 125 and lifecycle rollback value 126 in order to producelifecycle state value 135.

A personality value is received from OTP memory (212). For example,one-way function 140 may receive personality value 127 from OTP memory120 (and personality register 123, in particular.) A key split value isgenerated based on the secret key value, the personality value, and thelifecycle state value (214). For example, one-way function 140 maygenerate key split value 145 using secret key value 175, lifecycle statevalue 135, and personality value 127 as inputs to a one-way scramblingfunction. An example scrambling function may include using thepersonality value 127 and/or the lifecycle state value 135 as key treepath(s) with the secret key value 175 as an AES key (or visa-versa).

Encryption keys are generated from the key split value (216). Forexample, key amalgamation 150 may generate keys 160 based on key splitvalue 145 and a base key identification 151. Keys 160 may include, forexample, an ECC key for signing, an ECC private key forencryption/decryption; an AES-256 device specific key, and/or an AES-128device specific key.

FIG. 3 is a block diagram illustrating a device that includes acryptographic lifecycle management system. In FIG. 3 , device 300comprises lifecycle key generator 310, processor 390, user input 391,interface 392, and test interface 393. Lifecycle key generator 310includes one-time programmable memory 320, lifecycle value generator330, device generated one-time programmable key split (DGOK) 370, keysplit generator 340, key generator 350, OTP programmer 380, and OTP readcircuitry 381. It should be understood that one-time programmable memory320 can be, for example, a one-time electrically programmablesemiconductor memory (e.g., fabricated on a semiconductor substrate orusing a semiconductor material).

DGOK 370 (a.k.a., secret key) is operatively coupled to key splitgenerator 340. DGOK 370 stores a secret value in hardware. In anembodiment, DGOK may be stored in a secure (i.e., inaccessible toprocessor 390 and/or test interface 393) location of OTP memory 320. Inanother embodiment, DGOK 370 may be embedded in the design (i.e.,netlist) or configuration of device 300 such that DGOK 370 isinaccessible (i.e., cannot be read, written, calculated, or otherwise ordiscerned) via processor 390 and/or test interface 393. DGOK 370provides a secret value to key split generator 340. In an embodiment,DGOK 370 provides a 256-bit secret value to key split generator 340.

Lifecycle advance register 321 is operatively coupled to lifecycle valuegenerator 330. OTP memory 320 provides lifecycle value generator 330with lifecycle advance values stored by lifecycle advance register 321.Lifecycle rollback register 322 is operatively coupled to lifecyclevalue generator 330. OTP memory 320 provides lifecycle value generator330 with lifecycle rollback values stored by lifecycle rollback register322.

Lifecycle value generator 330 receives lifecycle advance values andlifecycle rollback values from OTP memory 320. Lifecycle value generator330 processes lifecycle advance values and lifecycle rollback valuesusing a lifecycle state generating process/function. This lifecyclestate generating process produces lifecycle state values from therespective lifecycle advance values and lifecycle rollback values itreceives. These lifecycle state values are provided to key splitgenerator 340.

Personality register 323 is operatively coupled to key split generator340. Personality register 323 stores personality values. OTP memory 320provides key split generator 340 with the personality values stored bypersonality register 323. Using OTP programming 380 and OTP readcircuitry 381, processor 390 under the control of software on device 300can read and write the contents of one or more of lifecycle advanceregister 321, lifecycle rollback register 322, and personality register323. Test interface 393 may also be used to read and write, or otherwiseobtain and/or set the contents of, one or more of lifecycle advanceregister 321, lifecycle rollback register 322, and personality register323.

Key split generator 340 uses DGOK 370, the lifecycle state values fromlifecycle state generator 330, and personality values from personalityregister 323 to generate key split values. Key split generator 340 mayproduce key split values by a process that includes, for example, usinga given personality value as a key tree path and DGOK 370 as an AES key.Likewise, the process key split generator 340 used to produce key splitvalues may further include using lifecycle state values as a key treepath and the result of the previous processing as an AES key. Otherone-way functions/processes may be used to generate key split valuesfrom DGOK 370, lifecycle state values, and personality values. Thus, itshould be understood that any difference (even a one bit difference)between a given lifecycle state value, or a given personality value,will result in different key split values being produced and supplied toprocessor 390. In addition, if the one-way function process is selectedappropriately, it should be economically infeasible to determine DGOK370 from the key split values or the keys provided to processor 390.Likewise, is should also be economically infeasible to determine DGOK370 from any data and/or circuitry that can be accessed or controlled bytest interface 393.

The key split values output by key split generator 340 are provided tokey generator 350. Based on key split values and base key identificationvalues, key generator 350 produces encryption keys for use by theprocessor 390 in cryptographic operations. These cryptographicoperations can include, for example, Elliptic Curve Cryptography (ECC)for signing (i.e., authenticating), ECC encryption and/or decryption,AES-256 encryption and/or decryption, and/or AES-128 encryption and/ordecryption. Other cryptographic operations for other uses can also beproduced from key split values by key generator 350.

Processor 390 is operatively coupled to lifecycle key generator 310.Processor 390 is operatively coupled to lifecycle key generator 310 toat least control the generation of keys by lifecycle key generator 310.Processor 390 is operatively coupled to key generator 350 of lifecyclekey generator 310 to receive keys that have been generated by keygenerator 350. Processor 390 is operatively coupled to OTP memory 320 oflifecycle key generator 310 to read and write values stored by OTPmemory 320. In particular, processor 390 is operatively coupled to OTPmemory 320 in order to read and write lifecycle advance register 321,lifecycle rollback register 322, and personality register 323. Testinterface 393 is operatively coupled to processor 390 and lifecycle keygenerator 310 to control and test circuitry. Test interface 393 may be,or include, for example, a test access port (TAP) for boundary scan andother serial test/access operations.

Device 300 may go through various lifecycles. By changing the values inlifecycle advance register 321 and personality register 323, the keysproduced by lifecycle key generator 310, which are used by processor 390and/or accessible via test interface 393, can be changed. By changingthe keys used by processor 390, the data (and/or authentications and/orauthorization) associated with device 300 are protected fromunauthorized use/access. Likewise, by changing the keys accessible bytest interface 393, the data (and/or authentications and/orauthorization) associated with device 300 are protected fromunauthorized use/access.

During operation, the bits of personality register 323 may besuccessively (and permanently) changed by processor 390 in response tocommands received via user interface 391 and/or interface 392. Thesechanges to personality register 323 may be in the manner of athermometer coded counter. Since the changes to personality register 323are permanent and irreversible, the keys produced by lifecycle keygenerator 310 are permanently changed when the value in personalityregister 323 is changed.

During operation, the bits of lifecycle advance register 321 may besuccessively (and permanently) changed by processor 390 in response tocommands received via user interface 391 and/or interface 392. Thesechanges to lifecycle advance register 321 may be in the manner of athermometer coded counter. The changes to lifecycle advance register 321are permanent and irreversible. However, the effect of the changes tolifecycle advance register 321 may be undone by corresponding changes tolifecycle rollback register 322. Thus, changes to lifecycle advanceregister 321 that cause lifecycle key generator 310 to produce temporarykeys can be negated by appropriate changes to lifecycle rollbackregister 322. The changes to lifecycle rollback register 322 that undothe effects the changes to lifecycle advance register 321 are determinedby lifecycle value generator 330. In other words, the lifecycle valuegenerating process implemented by lifecycle value generator 330 isconfigured such that certain values in lifecycle rollback register 322undo the effects of certain values in lifecycle advance register 321.

For example, if the lifecycle value generating process is a bitwise XORoperation between lifecycle rollback register 322 and lifecycle advanceregister 321, as long as lifecycle rollback register 322 and lifecycleadvance register 321 are equal (e.g., both 0x0000h, both 0x00FFh, etc.)the same resulting lifecycle state value (e.g., 0x0000h) will beprovided to key split generator 340—thereby resulting in lifecycle keygenerator 310 providing processor 390 with the same set of keys. Iflifecycle rollback register 322 and lifecycle advance register 321 arenot equal, different lifecycle state values will be provided to keysplit generator 340—thereby resulting in lifecycle key generator 310providing processor 390 with respectively different sets of keys.

To illustrate, consider the above example where the lifecycle valuegenerating process is a bitwise XOR operation between lifecycle rollbackregister 322 and lifecycle advance register 321. If lifecycle advanceregister 321 is 0x00FFh, and lifecycle rollback register 322 is 0x007Fh,lifecycle state generator will provide key split generator 340 with thevalue 0x0080h. Since 0x0080h is not equal to 0x0000h, and key splitgenerator 340 implements a one-way function that depends upon all of theinput values, including the lifecycle state value, the key split valueproduced by key split generator 340 (and therefore the keys produces bylifecycle key generator 310) will be different.

In another example, if lifecycle advance register 321 is thermometercode incremented from 0x00FFh to 0x01FFh, and lifecycle rollbackregister 322 is also thermometer code incremented from 0x007Fh, to0x00FF, lifecycle state generator will provide key split generator 340with the value 0x00100. Since 0x00100h (the current lifecycle statevalue) is not equal to 0x0080h (the previous lifecycle state value), thekey split value produced by key split generator 340 (and therefore thekeys produces by lifecycle key generator) will be different from thepre-increment values—even though both of these values represent a singleincrement of the lifecycle state.

Thus, it should be understood that lifecycle value generator 330 isconfigured such that certain (but not all) values stored in lifecyclerollback register 322 undo the effects of certain corresponding valuesstored in lifecycle advance register 321. In other embodiments,lifecycle value generator 330 may be configured such that arbitrarypairings of lifecycle advance values and lifecycle rollback values undo(or fail to undo) the effects of corresponding lifecycle advance values.

FIGS. 4A and 4B are a flowchart illustrating a method of configuring andde-configuring a cryptographically managed lifecycle state. The steps inFIGS. 4A and 4B may be performed by one or more elements of system 100and/or device 300. A first lifecycle state value is generated from afirst lifecycle advance value and a first lifecycle rollback value(402). For example, key state generator 330 may generate a firstlifecycle state value from the contents of lifecycle advance register321 and lifecycle rollback register 322. This first lifecycle statevalue is provided key split generator 340.

A first key split value is generated based on the first lifecycle statevalue, a personality value, and a secret key value (404). For example,key split generator 340 may generate a first key split value that isprovided to key generator 350. This first key split value may be theresult of a one-way function that takes the first lifecycle state valuefrom lifecycle state generator 330, the contents of personality register323, and DGOK 370 as inputs to produce a key split value. First key(s)are generated based on the first key split value (406). For example, keygenerator 350 may generate one or more keys based on the first key splitvalue received from key split generator 340.

The value of a first lifecycle advance bit is changed to create a secondlifecycle advance value (408). For example, processor 390 may controlOTP programming 380 to change the value of a bit in lifecycle advanceregister 321. Processor 390 may control OTP programming 380 to changethe value of a bit in lifecycle advance register 321 in response to userinput 391, and/or commands received via interface 392 (e.g., commandsreceived via a wireless interface.)

A second lifecycle state value is generated from a second lifecycleadvance value and the first lifecycle rollback value (410). For example,key state generator 330 may generate a second lifecycle state value fromthe changed contents of lifecycle advance register 321 and the unchangedcontents of lifecycle rollback register 322. This second lifecycle statevalue is provided to key split generator 340.

A second key split value is generated based on the second lifecyclestate value, the personality value, and the secret key value (412). Forexample, key split generator 340 may generate a second key split valuethat is provided to key generator 350. This second key split value maybe the result of the one-way function taking the second lifecycle statevalue from lifecycle state generator 330, the contents of personalityregister 323, and DGOK 370 as inputs to produce the second key splitvalue. Second key(s) are generated based on the second key split value(414). For example, key generator 350 may generate one or more keysbased on the second key split value received from key split generator340.

The value of a first lifecycle rollback bit is changed to create asecond lifecycle rollback value (416). For example, processor 390 maycontrol OTP programming 380 to change the value of a bit in lifecyclerollback register 322. Processor 390 may control OTP programming 380 tochange the value of a bit in lifecycle rollback register 322 in responseto user input 391, and/or commands received via interface 392 (e.g.,commands received via a wireless interface.)

The first lifecycle state value is generated from the second lifecycleadvance value and the second lifecycle rollback value (418). Forexample, key state generator 330 may generate the first lifecycle statevalue from the changed contents of lifecycle advance register 321 andthe changed contents of lifecycle rollback register 322. This firstlifecycle state value is provided to key split generator 340.

The first key split value is generated based on the personality value,the secret key value, and the first lifecycle state value that wasgenerated from the second lifecycle advance value, and the secondlifecycle rollback value (420). For example, key split generator 340 maygenerate the first key split value as a result of the one-way functiontaking the first lifecycle state value from lifecycle state generator330 (as produced by the changed contents of lifecycle advance register321 and the changed contents of lifecycle rollback register 322), thecontents of personality register 323, and DGOK 370. First key(s) aregenerated based on the first key split value that was generated from thefirst lifecycle state value that was, in turn, generated from the secondlifecycle advance value and the second lifecycle rollback value (422).For example, key generator 350 may generate one or more keys based onthe first key split value received from key split generator 340, wherethe first key split value was generated from the changed contents of thechanged contents of lifecycle advance register 321 and the changedcontents of lifecycle rollback register 322.

FIGS. 5A-5C illustrate an example lifecycle state generating process.The process illustrated in FIGS. 5A-5C may be performed by one or moreelements of system 100 and/or device 300—for example, lifecycle stategenerator 330. FIG. 5A illustrates a first lifecycle advance value 515as the binary bits 1000b. A first lifecycle rollback value 516 is alsoillustrated as the binary bits 1000b. The first lifecycle advance value515 and the first lifecycle rollback value 516 are input to a lifecyclestate generating function, F(A,R) 530, where A represents an inputparameter corresponding to lifecycle advance value, and R represents aninput parameter corresponding to a lifecycle rollback value. The outputof lifecycle state generating function 530 is first lifecycle statevalue 517. In FIG. 5A, the output of lifecycle state generating function530 in response to the first lifecycle advance value 515 and the firstlifecycle rollback value 516 are the binary bits 0000b.

FIG. 5B illustrates a second lifecycle advance value 525 as the binarybits 1100b. The first lifecycle rollback value 516 is illustrated as thebinary bits 1000b in FIG. 5B. The second lifecycle advance value 525 andthe first lifecycle rollback value 516 are input to lifecycle stategenerating function 530. The output of lifecycle state generatingfunction 530 is second lifecycle state value 527. In FIG. 5B, the outputof lifecycle state generating function 530 in response to the secondlifecycle advance value 525 and the first lifecycle rollback value 516are the binary bits 0100b.

FIG. 5C illustrates a second lifecycle advance value 525 as the binarybits 1100b. A second lifecycle rollback value 526 is illustrated as thebinary bits 1100b in FIG. 5C. The second lifecycle advance value 525 andthe first lifecycle rollback value 526 are input to lifecycle stategenerating function 530. The output of lifecycle state generatingfunction 530 is the first lifecycle state value 517. In FIG. 5C, theoutput of lifecycle state generating function 530 in response to thesecond lifecycle advance value 525 and the second lifecycle rollbackvalue 526 are the binary bits 0000b. Thus, it should be understood thatthe lifecycle state generating function 530 illustrated in FIGS. 5A-5Cis a bitwise XOR operation (i.e., F(A,R)=A⊕BB.) It should also beunderstood that other lifecycle state generating function 530 maycomprise other functions including an arbitrary mapping of lifecycleadvance values and corresponding lifecycle rollback values that producethe same output lifecycle state values for a plurality of mappings.

FIG. 6 is a flowchart illustrating a method of generating lifecycledependent encryption keys. The steps illustrated in FIG. 6 may beperformed by one or more elements of system 100 and/or device 300. Alifecycle state value is generated from a lifecycle advance value and alifecycle rollback value (602). For example, lifecycle state generator330 may calculate a lifecycle state value from the contents of lifecycleadvance register 321 and the contents of lifecycle rollback register322.

A first key split value is generated that is based on the lifecyclestate value, a secret key value, and a first personality value (604).For example, key split generator 340 may, based on the lifecycle statevalue, the contents of personality register 323, and DGOK value 370,calculate a first key split value. This first key split value may beprovided to key generator 350.

First key(s) are generated based on the first key split value (606). Forexample, key generator 350 may generate a first key based on the firstkey split value received from key split generator 340. This first keymay be provided to processor 390 for use in cryptographic operations.

The value of a personality bit is changed to create a second personalityvalue (608). For example, processor 390 may control OTP programming 380to change the value of at least one bit in personality register 323.Processor 390 may control OTP programming 380 to change the value of abit in personality register 323 in response to user input 391, and/orcommands received via interface 392 (e.g., commands received via awireless interface.)

A second key split value is generated that is based on the lifecyclestate value, a secret key value, and the second personality value (610).For example, key split generator 340 may, based on the lifecycle statevalue, the changed contents of personality register 323, and DGOK value370, calculate a second key split value. This second key split value maybe provided to key generator 350.

Second key(s) are generated based on the second key split value (612).For example, key generator 350 may generate a second key based on thesecond key split value received from key split generator 340. Thissecond key may be provided to processor 390 for use in cryptographicoperations. It should be understood that since changes to personalityregister 323 are permanent and irreversible, the keys produced bylifecycle key generator 310 after the bit is changed in personalityregister 323 are permanently changed.

FIG. 7 is a diagram illustrating the generation of accessible key splitvalues. The functions illustrated in FIG. 7 may be implemented by one ormore elements of system 100 and/or system 300—and key split generator340, in particular. In FIG. 7 , a DGOK value 775 and a personality value727 are input to a first scrambling (e.g., one-way) function 741,F1(P,D)—where P represents the personality value and D represents theDGOK (secret key) value. For example, DGOK value 370 and personalityregister 323 may provide inputs to key split generator 340. Key splitgenerator 340 may implement a first scrambling function using DGOK value370 and the contents of personality register 323. This first scramblingfunction may comprise, for example, using the contents of personalityregister 323 as a key tree path and the DGOK value as an AES key.

A lifecycle advance value 725 and a lifecycle rollback value 726 areinput to a bitwise exclusive-OR (XOR) function 730 to produce alifecycle state value. The lifecycle state value and the output from thefirst scrambling function are input to a second scrambling function 742,F2(L,F1), where L represents the lifecycle state value and F1 representsthe output of the first scrambling function. The output of the secondscrambling function is a device generated accessible key split(DGAK)—for example key split 145.

The methods, systems and devices described above may be implemented incomputer systems, or stored by computer systems. The methods describedabove may also be stored on a non-transitory computer readable medium.Devices, circuits, and systems described herein may be implemented usingcomputer-aided design tools available in the art, and embodied bycomputer-readable files containing software descriptions of suchcircuits. This includes, but is not limited to one or more elements ofsystem 100, device 300, and their components. These softwaredescriptions may be: behavioral, register transfer, logic component,transistor, and layout geometry-level descriptions. Moreover, thesoftware descriptions may be stored on storage media or communicated bycarrier waves.

Data formats in which such descriptions may be implemented include, butare not limited to: formats supporting behavioral languages like C,formats supporting register transfer level (RTL) languages like Verilogand VHDL, formats supporting geometry description languages (such asGDSII, GDSIII, GDSIV, CIF, and MEBES), and other suitable formats andlanguages. Moreover, data transfers of such files on machine-readablemedia may be done electronically over the diverse media on the Internetor, for example, via email. Note that physical files may be implementedon machine-readable media such as: 4 mm magnetic tape, 8 mm magnetictape, 3½ inch floppy media, CDs, DVDs, and so on.

FIG. 8 is a block diagram illustrating one embodiment of a processingsystem 800 for including, processing, or generating, a representation ofa circuit component 820. Processing system 800 includes one or moreprocessors 802, a memory 804, and one or more communications devices806. Processors 802, memory 804, and communications devices 806communicate using any suitable type, number, and/or configuration ofwired and/or wireless connections 808.

Processors 802 execute instructions of one or more processes 812 storedin a memory 804 to process and/or generate circuit component 820responsive to user inputs 814 and parameters 816. Processes 812 may beany suitable electronic design automation (EDA) tool or portion thereofused to design, simulate, analyze, and/or verify electronic circuitryand/or generate photomasks for electronic circuitry. Representation 820includes data that describes all or portions of system 100, device 300,and their components, as shown in the Figures.

Representation 820 may include one or more of behavioral, registertransfer, logic component, transistor, and layout geometry-leveldescriptions. Moreover, representation 820 may be stored on storagemedia or communicated by carrier waves.

Data formats in which representation 820 may be implemented include, butare not limited to: formats supporting behavioral languages like C,formats supporting register transfer level (RTL) languages like Verilogand VHDL, formats supporting geometry description languages (such asGDSII, GDSIII, GDSIV, CIF, and MEBES), and other suitable formats andlanguages. Moreover, data transfers of such files on machine-readablemedia may be done electronically over the diverse media on the Internetor, for example, via email

User inputs 814 may comprise input parameters from a keyboard, mouse,voice recognition interface, microphone and speakers, graphical display,touch screen, or other type of user interface device. This userinterface may be distributed among multiple interface devices.Parameters 816 may include specifications and/or characteristics thatare input to help define representation 820. For example, parameters 816may include information that defines device types (e.g., NFET, PFET,etc.), topology (e.g., block diagrams, circuit descriptions, schematics,etc.), and/or device descriptions (e.g., device properties, devicedimensions, power supply voltages, simulation temperatures, simulationmodels, etc.).

Memory 804 includes any suitable type, number, and/or configuration ofnon-transitory computer-readable storage media that stores processes812, user inputs 814, parameters 816, and circuit component 820.

Communications devices 806 include any suitable type, number, and/orconfiguration of wired and/or wireless devices that transmit informationfrom processing system 800 to another processing or storage system (notshown) and/or receive information from another processing or storagesystem (not shown). For example, communications devices 806 may transmitcircuit component 820 to another system. Communications devices 806 mayreceive processes 812, user inputs 814, parameters 816, and/or circuitcomponent 820 and cause processes 812, user inputs 814, parameters 816,and/or circuit component 820 to be stored in memory 804.

The foregoing description of the invention has been presented forpurposes of illustration and description. It is not intended to beexhaustive or to limit the invention to the precise form disclosed, andother modifications and variations may be possible in light of the aboveteachings. The embodiment was chosen and described in order to bestexplain the principles of the invention and its practical application tothereby enable others skilled in the art to best utilize the inventionin various embodiments and various modifications as are suited to theparticular use contemplated. It is intended that the appended claims beconstrued to include other alternative embodiments of the inventionexcept insofar as limited by the prior art.

What is claimed is:
 1. A method of generating encryption keys,comprising: configuring a semiconductor device having circuitry with asecret key value, the secret key value not accessible to softwarerunning on the semiconductor device; configuring one-time electricallyprogrammable semiconductor memory bits with initial values, eachone-time electrically programmable semiconductor memory bit beinglimited to one change in value from a respective initial value;receiving a first lifecycle advance value from lifecycle advance bitsstored by a first subset of the one-time electrically programmablesemiconductor memory bits; receiving a first lifecycle rollback valuefrom lifecycle rollback bits stored by a second subset of the one-timeelectrically programmable semiconductor memory bits; generating, using alifecycle state generating process, a first lifecycle state value fromthe first lifecycle advance value and the first lifecycle rollbackvalue; receiving a first personality value from personality bits storedby a third subset of the one-time electrically programmablesemiconductor memory bits; using a one-way processing function,generating a first key split value based on the secret key value, thefirst personality value, and the first lifecycle state value; andgenerating, from the first key split value, a first encryption key,wherein changing a lifecycle advance bit value stored by the firstsubset of the one-time electrically programmable semiconductor memorybits without changing a lifecycle rollback bit value stored by thesecond subset of the one-time programmable semiconductor memory bitswill generate a second encryption key that is not equal to the firstencryption key.
 2. The method of claim 1, further comprising: changingat least a first lifecycle advance bit thereby changing the firstlifecycle advance value stored by the first subset of the one-timeelectrically programmable semiconductor memory bits to a secondlifecycle advance value; generating, using the lifecycle stategenerating process, a second lifecycle state value from the secondlifecycle advance value and the first lifecycle rollback value; usingthe one-way processing function, generating a second key split valuebased on the secret key value, the first personality value, and thesecond lifecycle state value, the second lifecycle state value beingdifferent from the first lifecycle state value; and generating, from thesecond key split value, the second encryption key for use in securingdata processed by the semiconductor device, the second encryption keybeing different from the first encryption key as a result of the secondlifecycle state value being different from the first lifecycle statevalue.
 3. The method of claim 2, further comprising: changing at least afirst lifecycle rollback bit thereby changing the first lifecyclerollback value stored by the second subset of the one-time electricallyprogrammable semiconductor memory bits to a second lifecycle rollbackvalue; generating, using the lifecycle state generating process, thefirst lifecycle state value from the second lifecycle advance value andthe second lifecycle rollback value; using the one-way processingfunction, generating the first key split value based on the secret keyvalue, the first personality value, and the first lifecycle state valueas generated from the second lifecycle advance value and the secondlifecycle rollback value; and generating, from the first key split valuethat was generated from the first lifecycle state value that was furthergenerated from the second lifecycle advance value and the secondlifecycle rollback value, the first encryption key.
 4. The method ofclaim 1, wherein the first lifecycle state value is generated by thelifecycle state generating process when a lifecycle advance value storedby the first subset of the one-time electrically programmablesemiconductor memory bits equals a lifecycle rollback value stored bythe second subset of the one-time electrically programmablesemiconductor memory bits.
 5. The method of claim 1, wherein thelifecycle state generating process maps a first plurality of pairs oflifecycle advance values and lifecycle rollback values to the firstlifecycle state value.
 6. The method of claim 5, wherein a secondplurality of pairs of lifecycle advance values and lifecycle rollbackvalues that are not mapped by the lifecycle state generating process tothe first lifecycle state value are mapped by the lifecycle stategenerating process to values other than the first lifecycle state value.7. The method of claim 1, further comprising: changing at least a firstpersonality bit thereby changing the first personality value stored bythe third subset of the one-time electrically programmable semiconductormemory bits to a second personality value; using the one-way processingfunction, generating a personalized key split value based on the secretkey value, the second personality value, and the first lifecycle statevalue; and generating, from the personalized key split value, apersonalized encryption key for use in securing data processed by thesemiconductor device, the personalized encryption key being differentfrom the first encryption key as a result of the second personalityvalue being different from the first personality value.
 8. A method ofoperating an integrated circuit, comprising: programming at least one ofa plurality of one-time programmable memory bits where each one-timeprogrammable memory bit is limited to one change in value from arespective initial value, the plurality of one-time programmable memorybits including lifecycle advance bits stored by a first subset of theplurality of one-time programmable memory bits, lifecycle rollback bitsstored by a second subset of the plurality of the one-time programmablememory bits, and personality bits stored by a third subset of theplurality of one-time programmable memory bits; using a lifecycle valuegenerating process, generating lifecycle values from lifecycle advancevalues stored by the lifecycle advance bits and lifecycle rollbackvalues stored by the lifecycle rollback bits; using a one-way processingfunction, generating key split values based on personality bit values,lifecycle values, and a secret key value; and generating, based on thekey split values, a plurality of encryption key values wherein changinga lifecycle advance bit value stored by the first subset of the one-timeprogrammable memory bits without changing a lifecycle rollback bit valuestored by the second subset of the one-time programmable memory bitschanges the plurality of encryption key values generated by keyamalgamation circuitry.
 9. The method of claim 8, wherein the pluralityof encryption key values are generated by key amalgamation circuitry.10. The method of claim 8, wherein changing a lifecycle advance bitvalue stored by the first subset of the one-time programmable memorybits and changing a corresponding lifecycle rollback bit value stored bythe second subset of the one-time programmable memory bits does notchange the plurality of encryption key values generated.
 11. The methodof claim 8, wherein a first set of lifecycle advance bit values and acorresponding first set of lifecycle rollback bit values result in afirst set of encryption key values being generated.
 12. The method ofclaim 11, wherein a second set of lifecycle advance bit values and acorresponding second set of lifecycle rollback bit values result in asecond set of encryption key values being generated that are not in thefirst set of encryption key values.
 13. The method of claim 8, whereinchanging any personality bit value stored by the third subset of theone-time programmable memory bits changes the plurality of encryptionkey values generated.
 14. The method of claim 13, wherein a value ofrespective lifecycle rollback bits negate the effect of correspondinglifecycle advance bits on the encryption key values generated.
 15. Amethod of operating an integrated circuit, comprising: providing asecret key value where the secret key value is not accessible tosoftware controlling the integrated circuit; programming at least one ofa plurality of one-time programmable memory bits where each one-timeprogrammable memory bit is limited to one change in value from arespective initial value, the plurality of one-time programmable memorybits including lifecycle advance bits stored by a first subset of theplurality of one-time programmable memory bits, lifecycle rollback bitsstored by a second subset of the plurality of the one-time programmablememory bits, and personality bits stored by a third subset of theplurality of one-time programmable memory bits; using a lifecycle valuegenerating process, generating lifecycle values from lifecycle advancevalues stored by the lifecycle advance bits and lifecycle rollbackvalues stored by the lifecycle rollback bits, the lifecycle values toinclude a first lifecycle state value generated from a first lifecycleadvance value and a first lifecycle rollback value; using a one-wayprocessing function, generating key split values based on personalitybit values, lifecycle values, and the secret key value, the key splitvalues to include a first key split value based on the secret key value,a first personality value, and the first lifecycle state value; andgenerating, based on the key split values, a first plurality ofencryption key values, the first plurality of encryption key values toinclude a first encryption key generated from the first key split value,wherein changing a lifecycle advance bit value stored by the firstsubset of the one-time electrically programmable memory bits withoutchanging a lifecycle rollback bit value stored by the second subset ofthe one-time programmable memory bits will generate a second pluralityof encryption key values that does not include the first encryption keyvalue.
 16. The method of claim 15, further comprising: changing at leasta first lifecycle advance bit to change the first lifecycle advancevalue stored by the first subset of the one-time programmable memorybits to a second lifecycle advance value, generating a second lifecyclestate value from the second lifecycle advance value and the firstlifecycle rollback value by the lifecycle value; generating a second keysplit value based on the secret key value, the first personality value,and the second lifecycle state value where the second lifecycle statevalue is different from the first lifecycle state value; and generating,from the second key split value, a second encryption key, where thesecond encryption key is to be different from the first encryption keyas a result of the second lifecycle state value being different from thefirst lifecycle state value.
 17. The method of claim 16, whereinchanging at least a first lifecycle rollback bit thereby changes thefirst lifecycle rollback value stored by the second subset of theone-time programmable memory bits to a second lifecycle rollback value,and the first lifecycle state value is generated from the secondlifecycle advance value and the second lifecycle rollback value.
 18. Themethod of claim 17, wherein the one-way processing function generatesthe first key split value based on the secret key value, the firstpersonality value, and the first lifecycle state value as generated fromthe second lifecycle advance value and the second lifecycle rollbackvalue, and the first encryption key is generated from the first keysplit value that was generated from the first lifecycle state value thatwas further generated from the second lifecycle advance value and thesecond lifecycle rollback value.
 19. The method of claim 15, whereinchanging any personality bit value stored by the third subset of theone-time programmable memory bits changes the plurality of encryptionkey values generated.
 20. The method of claim 19, wherein the lifecyclevalue generating process maps a first plurality of pairs of lifecycleadvance values and lifecycle rollback values to the first lifecyclestate value.